package cn.itcast.javaobject;

/**
 * @title: Fibonacci
 * @Author Zhou
 * @Date: 2021/12/29 15:04
 * @Version 1.0
 */
public class Fibonacci {
    public static void main(String[] args) {
        Fib fib = new Fib();
        int fibonacci = fib.fibonacci(7);
        System.out.println("fibonacci = " + fibonacci);

        int peach = fib.peach(10);
        System.out.println("peach = " + peach);
    }
}

class Fib {
    public int fibonacci(int i) {
        if (i == 1 || i == 2) {
            return 1;
        } else {
            return fibonacci(i - 2) + fibonacci(i - 1);
        }
    }

    /**
     * 猴子吃桃子问题：
     * 有一堆桃子，猴子第一天吃了其中的一半，并再多吃了一个！
     * 以后每天猴子都吃其中的一半，然后再多吃一个。当到第 10 天时，
     * 想再吃时（即还没吃），发现只有 1 个桃子了。问题：最初共多少个桃子？
     * 思路分析 逆推
     * 1. day = 10 时 有 1 个桃子
     * 2. day = 9 时 有 (day10 + 1) * 2 = 4
     * 3. day = 8 时 有 (day9 + 1) * 2 = 10
     * 4. 规律就是 前一天的桃子 = (后一天的桃子 + 1) *2//就是我们的能力
     * 5. 递归
     */

    public int peach(int day) {
        if (day == 10) {
            return 1;
        } else if (day >= 1 && day <= 9) {
            return (peach(day + 1) + 1) * 2;
        } else {
            System.out.println("day在1-10");
            return -1;
        }
    }

}
